﻿using System;
using System.Collections.Generic;
using System.Text;
using DevExpress.Persistent.BaseImpl;
using DevExpress.Xpo;
using DevExpress.Persistent.Base;

namespace WinSCM.Module.Model
{
    [NavigationItem("资金管理")]
    public class 收款单 : OrderObject
    {
        public 收款单(Session session)
            : base(session)
        {

        }

        protected override SeedType SeedType
        {
            get { return SeedType.收款单; }
        }
        private 客户 _客户名称;
        [Custom("Caption", "客户名称")]
        public 客户 客户名称
        {
            get { return _客户名称; }
            set { SetPropertyValue<客户>("客户名称", ref _客户名称, value); }
        }
        private 收款单类型 _单据类型;
        [Custom("Caption", "单据类型")]
        public 收款单类型 单据类型
        {
            get { return _单据类型; }
            set { SetPropertyValue<收款单类型>("单据类型", ref _单据类型, value); }
        }

        private DateTime _日期;
        [Custom("Caption", "日期")]
        public DateTime 日期
        {
            get { return _日期; }
            set { SetPropertyValue<DateTime>("日期", ref _日期, value); }
        }
        private 结算账户 _结算账户;
        [Custom("Caption", "结算账户")]
        public 结算账户 结算账户
        {
            get { return _结算账户; }
            set { SetPropertyValue<结算账户>("结算账户", ref _结算账户, value); }
        }
        private decimal _本次核销;
        [Custom("Caption", "本次核销")]
        public decimal 本次核销
        {
            get { return _本次核销; }
            set { SetPropertyValue<decimal>("本次核销", ref _本次核销, value); }
        }
        private decimal _本次收款;
        [Custom("Caption", "本次收款")]
        public decimal 本次收款
        {
            get { return _本次收款; }
            set { SetPropertyValue<decimal>("本次收款", ref _本次收款, value); }
        }
        private 结算方式 _结算方式;
        [Custom("Caption", "结算方式")]
        public 结算方式 结算方式
        {
            get { return _结算方式; }
            set { SetPropertyValue<结算方式>("结算方式", ref _结算方式, value); }
        }
        private string _结算号;
        [Custom("Caption", "结算号")]
        public string 结算号
        {
            get { return _结算号; }
            set { SetPropertyValue<string>("结算号", ref _结算号, value); }
        }
        private decimal _整单折扣;
        [Custom("Caption", "整单折扣")]

        public decimal 整单折扣
        {
            get { return _整单折扣; }
            set { SetPropertyValue<decimal>("整单折扣", ref _整单折扣, value); }
        }
        private 会计科目 _折扣科目;
        [Custom("Caption", "折扣科目")]
        public 会计科目 折扣科目
        {
            get { return _折扣科目; }
            set { SetPropertyValue<会计科目>("折扣科目", ref _折扣科目, value); }
        }
        private 职员 _业务员;
        [Custom("Caption", "业务员")]
        public 职员 业务员
        {
            get { return _业务员; }
            set { SetPropertyValue<职员>("业务员", ref _业务员, value); }
        }
        private 部门 _部门;
        [Custom("Caption", "部门")]
        public 部门 部门
        {
            get { return _部门; }
            set { SetPropertyValue<部门>("部门", ref _部门, value); }
        }
        [Association("收款单-明细")]
        public XPCollection<收款单明细> 收款单明细
        {
            get { return GetCollection<收款单明细>("收款单明细"); }
        }
    }
    public class 收款单明细 : BaseObject
    {
        public 收款单明细()
        {

        }
        private 收款单 _收款单号;
        [Custom("Caption", "收款单号")]
        [Association("收款单-明细")]
        public 收款单 收款单号
        {
            get { return _收款单号; }
            set { SetPropertyValue<收款单>("收款单号", ref _收款单号, value); }
        }

        private OrderObject _源单据;
        [Custom("Caption", "源单据")]
        public OrderObject 源单据
        {
            get { return _源单据; }
            set { SetPropertyValue<OrderObject>("源单据", ref _源单据, value); }
        }
        private decimal _本次核销;
        [Custom("Caption", "本次核销")]
        public decimal 本次核销
        {
            get { return _本次核销; }
            set { SetPropertyValue<decimal>("本次核销", ref _本次核销, value); }
        }
    }
    public enum 收款单类型
    {
        销售收款 = 0,
        预收款 = 1,
        预收退款 = 2
    }
    public enum 其他收款单类型
    {
        收款结算 = 0,
        其他应收 = 1
    }
    [NavigationItem("资金管理")]
    public class 其他收款单 : OrderObject
    {
        public 其他收款单(Session session)
            : base(session)
        {

        }
        protected override SeedType SeedType
        {
            get { return SeedType.其他收款单; }
        }
        private 其他收款单 _单据类型;
        [Custom("Caption", "单据类型")]
        public 其他收款单 单据类型
        {
            get { return _单据类型; }
            set { SetPropertyValue<其他收款单>("单据类型", ref _单据类型, value); }
        }
        private DateTime _日期;
        [Custom("Caption", "日期")]
        public DateTime 日期
        {
            get { return _日期; }
            set { SetPropertyValue<DateTime>("日期", ref _日期, value); }
        }
        private 客户 _客户名称;
        [Custom("Caption", "客户名称")]
        public 客户 客户名称
        {
            get { return _客户名称; }
            set { SetPropertyValue<客户>("客户名称", ref _客户名称, value); }
        }
        private decimal _应结算金额;
        [Custom("Caption", "应结算金额")]
        public decimal 应结算金额
        {
            get { return _应结算金额; }
            set { SetPropertyValue<decimal>("应结算金额", ref _应结算金额, value); }
        }
        private decimal _已结算金额;
        [Custom("Caption", "已结算金额")]
        public decimal 已结算金额
        {
            get { return _已结算金额; }
            set { SetPropertyValue<decimal>("已结算金额", ref _已结算金额, value); }
        }
        private 结算账户 _结算账户;
        [Custom("Caption", "结算账户")]
        public 结算账户 结算账户
        {
            get { return _结算账户; }
            set { SetPropertyValue<结算账户>("结算账户", ref _结算账户, value); }
        }
        private string _结算号;
        [Custom("Caption", "结算号")]
        public string 结算号
        {
            get { return _结算号; }
            set { SetPropertyValue<string>("结算号", ref _结算号, value); }
        }
        private 摘要库 _摘要;
        [Custom("Caption", "摘要")]
        public 摘要库 摘要
        {
            get { return _摘要; }
            set { SetPropertyValue<摘要库>("摘要", ref _摘要, value); }
        }
    }
    public class 其他应收款明细 : BaseObject
    {
        public 其他应收款明细(Session session)
            : base(session)
        {

        }
        private 其他收款单 _其他应收款单号;
        [Custom("Caption", "其他应收款单号")]
        public 其他收款单 其他应收款单号
        {
            get { return _其他应收款单号; }
            set { SetPropertyValue<其他收款单>("其他应收款单号", ref _其他应收款单号, value); }
        }
        private 收支类别 _收入类别;
        [Custom("Caption", "收入类别")]
        public 收支类别 收入类别
        {
            get { return _收入类别; }
            set { SetPropertyValue<收支类别>("收入类别", ref _收入类别, value); }
        }
        private decimal _金额;
        [Custom("Caption", "金额")]
        public decimal 金额
        {
            get { return _金额; }
            set { SetPropertyValue<decimal>("金额", ref _金额, value); }
        }
        private string _备注;
        [Custom("Caption", "备注")]
        public string 备注
        {
            get { return _备注; }
            set { SetPropertyValue<string>("备注", ref _备注, value); }
        }
    }
    public enum 付款单类型
    {
        采购付款 = 0,
        预付款 = 1,
        预付退款 = 2
    }
    [NavigationItem("资金管理")]
    public class 付款单 : OrderObject
    {
        public 付款单(Session session)
            : base(session)
        {

        }
        protected override SeedType SeedType
        {
            get { return SeedType.付款单; }
        }
        private 付款单类型 _单据类型;
        [Custom("Caption", "单据类型")]
        public 付款单类型 单据类型
        {
            get { return _单据类型; }
            set { SetPropertyValue<付款单类型>("单据类型", ref _单据类型, value); }
        }

        private 供应商 _供应商名称;
        [Custom("Caption", "供应商名称")]
        public 供应商 供应商名称
        {
            get { return _供应商名称; }
            set { SetPropertyValue<供应商>("供应商名称", ref _供应商名称, value); }
        }
        private DateTime _日期;
        [Custom("Caption", "日期")]
        public DateTime 日期
        {
            get { return _日期; }
            set { SetPropertyValue<DateTime>("日期", ref _日期, value); }
        }
        private 结算账户 _结算账户;
        [Custom("Caption", "结算账户")]
        public 结算账户 结算账户
        {
            get { return _结算账户; }
            set { SetPropertyValue<结算账户>("结算账户", ref _结算账户, value); }
        }
        private decimal _结算核销;
        [Custom("Caption", "结算核销")]
        public decimal 结算核销
        {
            get { return _结算核销; }
            set { SetPropertyValue<decimal>("结算核销", ref _结算核销, value); }
        }
        private 结算方式 _结算方式;
        [Custom("Caption", "结算方式")]
        public 结算方式 结算方式
        {
            get { return _结算方式; }
            set { SetPropertyValue<结算方式>("结算方式", ref _结算方式, value); }
        }
        private string _结算号;
        [Custom("Caption", "结算号")]
        public string 结算号
        {
            get { return _结算号; }
            set { SetPropertyValue<string>("结算号", ref _结算号, value); }
        }
        private decimal _本次付款;
        [Custom("Caption", "本次付款")]
        public decimal 本次付款
        {
            get { return _本次付款; }
            set { SetPropertyValue<decimal>("本次付款", ref _本次付款, value); }
        }
        private decimal _整单折扣;
        [Custom("Caption", "整单折扣")]
        public decimal 整单折扣
        {
            get { return _整单折扣; }
            set { SetPropertyValue<decimal>("整单折扣", ref _整单折扣, value); }
        }
        private 摘要库 _摘要;
        [Custom("Caption", "摘要")]
        public 摘要库 摘要
        {
            get { return _摘要; }
            set { SetPropertyValue<摘要库>("摘要", ref _摘要, value); }
        }
        private 职员 _业务员;
        [Custom("Caption", "业务员")]
        public 职员 业务员
        {
            get { return _业务员; }
            set { SetPropertyValue<职员>("业务员", ref _业务员, value); }
        }
        private 部门 _部门;
        [Custom("Caption", "部门")]
        public 部门 部门
        {
            get { return _部门; }
            set { SetPropertyValue<部门>("部门", ref _部门, value); }
        }
        [Association("付款单-明细")]
        public XPCollection<付款单明细> 付款单明细
        {
            get { return GetCollection<付款单明细>("付款单明细"); }
        }
    }
    public class 付款单明细 : BaseObject
    {
        public 付款单明细(Session session)
            : base(session)
        {

        }
        
        private 付款单 _付款单号;
        [Custom("Caption", "付款单号")]
        [Association("付款单-明细")]
        public 付款单 付款单号
        {
            get { return _付款单号; }
            set { SetPropertyValue<付款单>("付款单号", ref _付款单号, value); }
        }
        private OrderObject _源单据号;
        [Custom("Caption", "源单据号")]
        public OrderObject 源单据号
        {
            get { return _源单据号; }
            set { SetPropertyValue<OrderObject>("源单据号", ref _源单据号, value); }
        }
        private decimal _本次核销;
        [Custom("Caption", "本次核销")]
        public decimal 本次核销
        {
            get { return _本次核销; }
            set { SetPropertyValue<decimal>("本次核销", ref _本次核销, value); }
        }
        private string _备注;
        [Custom("Caption", "备注")]
        public string 备注
        {
            get { return _备注; }
            set { SetPropertyValue<string>("备注", ref _备注, value); }
        }

    }
    public enum 其他付款单类型
    {
        费用结算 = 0,
        其他应付 = 1
    }
    [NavigationItem("资金管理")]
    public class 其他付款单 : OrderObject
    {
        public 其他付款单(Session session)
            : base(session)
        {

        }
        protected override SeedType SeedType
        {
            get { return SeedType.其他付款单; }
        }
        private 其他付款单类型 _单据类型;
        [Custom("Caption", "单据类型")]
        public 其他付款单类型 单据类型
        {
            get { return _单据类型; }
            set { SetPropertyValue<其他付款单类型>("单据类型", ref _单据类型, value); }
        }
        private 供应商 _供应商名称;
        [Custom("Caption", "供应商名称")]
        public 供应商 供应商名称
        {
            get { return _供应商名称; }
            set { SetPropertyValue<供应商>("供应商名称", ref _供应商名称, value); }
        }
        private DateTime _日期;
        [Custom("Caption", "日期")]
        public DateTime 日期
        {
            get { return _日期; }
            set { SetPropertyValue<DateTime>("日期", ref _日期, value); }
        }
        private decimal _应结算金额;
        [Custom("Caption", "应结算金额")]
        public decimal 应结算金额
        {
            get { return _应结算金额; }
            set { SetPropertyValue<decimal>("应结算金额", ref _应结算金额, value); }
        }
        private decimal _已结算金额;
        [Custom("Caption", "已结算金额")]
        public decimal 已结算金额
        {
            get { return _已结算金额; }
            set { SetPropertyValue<decimal>("已结算金额", ref _已结算金额, value); }
        }
        private 结算账户 _结算账户;
        [Custom("Caption", "结算账户")]
        public 结算账户 结算账户
        {
            get { return _结算账户; }
            set { SetPropertyValue<结算账户>("结算账户", ref _结算账户, value); }
        }
        private 结算方式 _结算方式;
        [Custom("Caption", "结算方式")]
        public 结算方式 结算方式
        {
            get { return _结算方式; }
            set { SetPropertyValue<结算方式>("结算方式", ref _结算方式, value); }
        }
        private string _结算号;
        [Custom("Caption", "结算号")]
        public string 结算号
        {
            get { return _结算号; }
            set { SetPropertyValue<string>("结算号", ref _结算号, value); }
        }
        private 摘要库 _摘要;
        [Custom("Caption", "摘要")]
        public 摘要库 摘要
        {
            get { return _摘要; }
            set { SetPropertyValue<摘要库>("摘要", ref _摘要, value); }
        }
        private 职员 _经手人;
        [Custom("Caption", "经手人")]
        public 职员 经手人
        {
            get { return _经手人; }
            set { SetPropertyValue<职员>("经手人", ref _经手人, value); }
        }
        private 部门 _部门;
        [Custom("Caption", "部门")]
        public 部门 部门
        {
            get { return _部门; }
            set { SetPropertyValue<部门>("部门", ref _部门, value); }
        }
        public XPCollection<其他付款单明细> 其他付款单明细
        {
            get { return GetCollection<其他付款单明细>("其他付款单明细"); }
        }
    }
    public class 其他付款单明细 : BaseObject
    {
        public 其他付款单明细(Session session)
            : base(session)
        {

        }
        private 其他付款单 _其他付款单号;
        [Custom("Caption", "其他付款单号")]
        public 其他付款单 其他付款单号
        {
            get { return _其他付款单号; }
            set { SetPropertyValue<其他付款单>("其他付款单号", ref _其他付款单号, value); }
        }
        private 收支类别 _支出类别;
        [Custom("Caption", "支出类别")]
        public 收支类别 支出类别
        {
            get { return _支出类别; }
            set { SetPropertyValue<收支类别>("支出类别", ref _支出类别, value); }
        }
        private decimal _金额;
        [Custom("Caption", "金额")]
        public decimal 金额
        {
            get { return _金额; }
            set { SetPropertyValue<decimal>("金额", ref _金额, value); }
        }
        private string _备注;
        [Custom("Caption", "备注")]
        public string 备注
        {
            get { return _备注; }
            set { SetPropertyValue<string>("备注", ref _备注, value); }
        }
    }
    public enum 核销类型
    {
        预收冲应收 = 0,
        预付冲应付 = 1,
        应收冲应付 = 2,
        应收转应收 = 3,
        应付转应付 = 4
    }
    [NavigationItem("资金管理")]
    public class 核销单 : OrderObject
    {
        public 核销单(Session session)
            : base(session)
        {

        }

        protected override SeedType SeedType
        {
            get { return SeedType.核销单; }
        }
        private 核销类型 _核销类型;
        [Custom("Caption", "核销类型")]
        public 核销类型 核销类型
        {
            get { return _核销类型; }
            set { SetPropertyValue<核销类型>("核销类型", ref _核销类型, value); }
        }
        //private 客户 _转出客户;
        //[Custom("Caption", "转出客户")]
        //public 客户 转出客户
        //{
        //    get { return _转出客户; }
        //    set { SetPropertyValue<客户>("转出客户", ref _转出客户, value); }
        //}
        //private 客户 _转入客户;
        //[Custom("Caption", "转入客户")]
        //public 客户 转入客户
        //{
        //    get { return _转入客户; }
        //    set { SetPropertyValue<客户>("转入客户", ref _转入客户, value); }
        //}

     
        private DateTime _日期;
        [Custom("Caption", "日期")]
        public DateTime 日期
        {
            get { return _日期; }
            set { SetPropertyValue<DateTime>("日期", ref _日期, value); }
        }
        private 摘要库 _摘要;
        [Custom("Caption", "摘要")]
        public 摘要库 摘要
        {
            get { return _摘要; }
            set { SetPropertyValue<摘要库>("摘要", ref _摘要, value); }
        }
        private string _说明;
        [Custom("Caption", "说明")]
        public string 说明
        {
            get { return _说明; }
            set { SetPropertyValue<string>("说明", ref _说明, value); }
        }
    }
    [NavigationItem("资金管理")]
    public class 银行存款单 : OrderObject
    {
        public 银行存款单(Session session)
            : base(session)
        {

        }

        protected override SeedType SeedType
        {
            get { return SeedType.银行存款单; }
        }
        private 结算账户 _付款账户;
        [Custom("Caption", "付款账户")]
        public 结算账户 付款账户
        {
            get { return _付款账户; }
            set { SetPropertyValue<结算账户>("付款账户", ref _付款账户, value); }
        }
        private 结算账户 _收款账户;
        [Custom("Caption", "收款账户")]
        public 结算账户 收款账户
        {
            get { return _收款账户; }
            set { SetPropertyValue<结算账户>("收款账户", ref _收款账户, value); }
        }
        private DateTime _日期;
        [Custom("Caption", "日期")]
        public DateTime 日期
        {
            get { return _日期; }
            set { SetPropertyValue<DateTime>("日期", ref _日期, value); }
        }
        private decimal _金额;
        [Custom("Caption", "金额")]
        public decimal 金额
        {
            get { return _金额; }
            set { SetPropertyValue<decimal>("金额", ref _金额, value); }
        }
        private 摘要库 _摘要;
        [Custom("Caption", "摘要")]
        public 摘要库 摘要
        {
            get { return _摘要; }
            set { SetPropertyValue<摘要库>("摘要", ref _摘要, value); }
        }
        private 职员 _经手人;
        [Custom("Caption", "经手人")]
        public 职员 经手人
        {
            get { return _经手人; }
            set { SetPropertyValue<职员>("经手人", ref _经手人, value); }
        }
        private 部门 _部门;
        [Custom("Caption", "部门")]
        public 部门 部门
        {
            get { return _部门; }
            set { SetPropertyValue<部门>("部门", ref _部门, value); }
        }

    }    
}
